package cz.semjobKB.knowledge.api;

/**
 * Interface used for one matched triple. Declares methods to get details about the triple match
 */
public interface ITripleItem {

    /**
     * Gets the lemma of the subject part of the triple. If the subject is a blank node, null is returned.
     * @return Subject lemma or null the subject part is not presented.
     */
	public String getSubjectLemma();

    /**
     * Gets the textual representation of the subject in the triple as it was matched in the document.
     * If the subject is a blank node, null is returned.
     * @return Textual representation of the subject
     */
	public String getSubjectWord();

    /**
     * Gets the lemma of the subject part of the triple. Predicate cannot be a blank node. Never returns null.
     * @return Predicate lemma
     */
	public String getPredicateLemma();

    /**
     * Gets the textual representation of the predicate in the triple as it was matched in the document.
     * Predicate cannot be a blank node, never returns null
     * @return Predicate textual representation
     */
	public String getPredicateWord();

    /**
     * Gets the lemma of the object part of the triple. If the object is a blank node, null is returned.
     * @return Object lemma
     */
	public String getObjectLemma();

    /**
     * Gets the textual representation of the object in the triple as it was matched in the document.
     * If the object is a blank node, null is returned.
     * @return Object textual representation
     */
	public String getObjectWord();

    /**
     * True if the triple is complete, e.g. contains subject, predicate, object. When incomplete false is return
     * @return True if the triple is complete
     */
	public boolean isCompleteTriple();
	
}
